home *** CD-ROM | disk | FTP | other *** search
/ Atari Forever 4 / Atari Forever 4.zip / Atari Forever 4.iso / SERIE_DM / DM_154 / DM_154.MSA / OVERSMP2.LST < prev    next >
File List  |  1986-02-06  |  2KB  |  87 lines

  1. ' Zweifach-Oversampling Sample Converter
  2. ' konvertiert z.B. 16KHz -> 8Khz
  3. '
  4. SETCOLOR 0,1
  5. SPOKE &H484,6
  6. GRAPHMODE 1
  7. DEFFILL 1,2,4
  8. PBOX 0,0,639,399
  9. DEFTEXT 1,0,0,26
  10. TEXT 150,320," Oversampler "
  11. PRINT AT(30,3);" LOAD SAMPLE FILE "
  12. FILESELECT "a:\*.*","",n$
  13. IF n$=""
  14.   EDIT
  15. ENDIF
  16. t=1
  17. ok=0
  18. REPEAT
  19.   IF INSTR(t+1,n$,"\")=0
  20.     ok=1
  21.     tr$=LEFT$(n$,t)
  22.     nm$=RIGHT$(n$,LEN(n$)-t)
  23.   ELSE
  24.     t=t+1
  25.   ENDIF
  26. UNTIL ok
  27. maxlen=FRE(0)-5000
  28. DIM smp%(maxlen/4)
  29. OPEN "i",#1,n$
  30. l=LOF(#1)
  31. CLOSE
  32. IF l>maxlen
  33.   ALERT 3,"Out of Memory",1," shit! ",d!
  34.   EDIT
  35. ENDIF
  36. '
  37. offset=LPEEK(ARRPTR(smp%()))+4  !⇦ muß das +4 sein?
  38. BLOAD n$,offset
  39. '
  40. DEFTEXT 1,0,0,6
  41. TEXT 150,341,"File: "+n$
  42. '
  43. an=0
  44. rng=l
  45. @welle(an,rng)
  46. ALERT 2," Convert from 16KHz | to 8KHz ? ",1,"Sure|Oops!",d%
  47. IF d%=1
  48.   @convert(an,rng)
  49.   @welle(an,INT(rng/2))
  50.   PRINT AT(25,2);" SAVE converted sample: "
  51.   FILESELECT tr$+"*.*",nm$,n$
  52.   IF n$<>""
  53.     BSAVE n$,offset,rng/2
  54.   ENDIF
  55. ENDIF
  56. EDIT
  57. '
  58. '
  59. PROCEDURE welle(anf,rg)
  60.   DEFLINE 1,1,0,0
  61.   DEFFILL 1,2,4
  62.   PBOX 0,272,639,288
  63.   DEFFILL 1,0,0
  64.   PBOX 0,0,639,255
  65.   PLOT 0,128
  66.   FOR i=0 TO 639
  67.     p=INT(i*rg/640)
  68.     a=PEEK(offset+anf+p)
  69.     DRAW  TO i,a
  70.   NEXT i
  71.   PRINT AT(1,17);SPC(80);
  72.   DEFLINE 2,1,1,1
  73.   LINE 0,263,639,263
  74.   PRINT AT(3,17);anf
  75.   PRINT AT(74,17);anf+rg
  76.   PRINT AT(37,17);rg
  77. RETURN
  78. '
  79. PROCEDURE convert(anf,rg)
  80.   LOCAL i%,w%,adr%
  81.   FOR i%=0 TO rg-1 STEP 2
  82.     adr%=offset+i%
  83.     w%=PEEK(adr%)+PEEK(adr%+1)
  84.     POKE offset+i%/2,w%/2
  85.   NEXT i%
  86. RETURN
  87.